Actions
Сборка курсов под разные типы требует набор действий. Данные наборы имеют много общего, но частично различаются. Поэтому все действия разбиты на классы-действия (Actions), которые собираются в общую логику в классах ConfigBuilder
IConfigBuilderAction
Интерфейс, который определяет только один метод do(): void. В этом методе и должны быть реализовано действие для конфигурации сборки.
ConfigBuilderAction
Имплементирует интерфейс IConfigBuilderAction, но не определяет метод do, а только добавляет свойство StaticBuild $static_build с объектом текущей сборки. Так что все классы-действия наследуются именно от этого класса
ActionsGroup
Для упрощения работы с классами-действиями создан класс ActionsGroup, который хранит в себе массив классов-действий в свойстве array $action_classes. Этот класс имплементирует интерфейс IConfigBuilderAction, поэтому в нем определен публичный метод do, но вместо своего собственного действия вызывается do метод у всех действий из массива $action_classes.
Благодаря этому можно собрать массив действий и вызвать все действия одним методом do. А так как классы-действия и ActionsGroup имеют одинаковый интерфейс в виде метода do, то можно вкладывать группу в группу для расширения набора действий
Действия
CopyConfigDir
Копирует всю директорию с файлами конфигурации в сборку. Так что в сборку изначально попадают файлы под все типы сборок, задача дальнейших действий - удалить лишние файлы
PrepareHtmlConfig
Подготавливает index*.html файлы под определенную сборку. index.html файл попадает во все типы сборок, а index_scorm.html и index_xapi.html в соответствующие типы. Эти index.html файлы являются входными точками для открытия сборки, и именно в этих файлах хранятся все настройки сборки
PrepareHtmlConfigMultilang
Расширяет класс PrepareHtmlConfig для добавления в сборку информации о переводах